package com.wish.g3.account.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * <p>
 * 对账批次明细表（保存对账结果明细的表）
 * </p>
 *
 * @author wish
 * @since 2022-11-23
 */
@TableName("tb_cw_check_batch_detail")
public class CwCheckBatchDetail implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键 自增
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 账期年月日（yyyymmdd）
     */
    private String billDay;

    /**
     * 对账年月日(yyyymmdd)
     */
    private String checkDay;

    /**
     * 批次ID
     */
    private Long batchId;

    /**
     * 批次号（yyyymmdd001）
     */
    private String batchNo;

    /**
     * 交易流水号，支付订单的支付订单号
     */
    private String payOrderNo;

    /**
     * 渠道订单号，支付订单中的渠道订单号
     */
    private String qudaoOrderNo;

    /**
     * 渠道名称：拉卡拉 交易渠道：暂时固定拉卡拉。
     */
    private String tradeQudao;

    /**
     * 记账凭证：支付接口回调更新支付状态的时候：已记账的才参与对账。交易流水号+100（未记账）（自动） 交易流水号+101（已记账）（自动）交易流水号+111（已记账）（手动）
     */
    private String certificateJz;

    /**
     * 对账凭证：支付接口回调更新支付状态的时候：已记账的才参与对账。交易流水号+200（未对账）（自动））,交易流水号+201（已对账）（自动）,交易流水号+211（已对账）（手动）
     */
    private String certificateDz;

    /**
     * 交易结果：接口回调或者返回的结果 1:处理中，2:成功，3:失败。
     */
    private Integer tradeResult;

    /**
     * 交易金额：支付订单金额（显示账单和系统支付订单中的金额，用“/”拼接）
     */
    private String amount;

    /**
     * 交易日期:：渠道支付时间（显示账单和系统支付订单中的渠道支付时间，用“/”拼接）
     */
    private String tradeDateZf;

    /**
     * 手续费：对账文件里面的手续费
     */
    private BigDecimal commissionFee;

    /**
     * 支付方式,同流水里面一样 1:微信扫码，2:支付宝扫码，3:微信公众号，4:认证支付，5:代付到银行卡
     */
    private Integer payWay;

    /**
     * 交易账户：出端的账户如果是快捷支付：银行卡号，如果是支付宝微信扫码支付，理论上就是支付宝微信账号，H5也是微信账号。提现的时候：拉卡拉的企业账户）
     */
    private String tradeAccount;

    /**
     * 交易账户类型：暂定1:微信，2:支付宝，3:银行卡，4:拉卡拉（微信扫码和H5都是微信，支付宝扫码就是支付宝，认证就是银行卡，提现的时候是拉卡拉）
     */
    private Integer tradeAccountType;

    /**
     * 对账完成时间：对账记录的创建时间
     */
    private LocalDateTime checkEndDate;

    /**
     * 是否差错， 0：否， 1：是
     */
    private Boolean hasDiff;

    /**
     * 差错处理结果：1：未处理, 2：要结算，3：不结算，4：已处理 (对于入金，选择2，或者3来提示处理结果，出金，线下处理账款，上来标记已处理状态, 没有差错的时候为空)
     */
    private Integer processState;

    /**
     * 是否完成对账, 1:完成，2：未完成， 3：取消
     */
    private Integer completeState;

    /**
     * 对账确认时间
     */
    private LocalDateTime confirmDate;

    /**
     * 商户可结算金额（入金的时候，可以结算给商户虚拟账户的金额，比如商户充值金额，租户缴费金额，差错处理的时候提示信息判断用, 为0的时候，表示没有结算金额）
     */
    private BigDecimal canClearingAmount;

    /**
     * 备注
     */
    private String remarks;

    /**
     * 删除标识,0:未删除，1：删除
     */
    private Boolean delFlg;

    /**
     * 创建用户ID
     */
    private Long createUserid;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新用户ID
     */
    private Long updateUserid;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
    public String getBillDay() {
        return billDay;
    }

    public void setBillDay(String billDay) {
        this.billDay = billDay;
    }
    public String getCheckDay() {
        return checkDay;
    }

    public void setCheckDay(String checkDay) {
        this.checkDay = checkDay;
    }
    public Long getBatchId() {
        return batchId;
    }

    public void setBatchId(Long batchId) {
        this.batchId = batchId;
    }
    public String getBatchNo() {
        return batchNo;
    }

    public void setBatchNo(String batchNo) {
        this.batchNo = batchNo;
    }
    public String getPayOrderNo() {
        return payOrderNo;
    }

    public void setPayOrderNo(String payOrderNo) {
        this.payOrderNo = payOrderNo;
    }
    public String getQudaoOrderNo() {
        return qudaoOrderNo;
    }

    public void setQudaoOrderNo(String qudaoOrderNo) {
        this.qudaoOrderNo = qudaoOrderNo;
    }
    public String getTradeQudao() {
        return tradeQudao;
    }

    public void setTradeQudao(String tradeQudao) {
        this.tradeQudao = tradeQudao;
    }
    public String getCertificateJz() {
        return certificateJz;
    }

    public void setCertificateJz(String certificateJz) {
        this.certificateJz = certificateJz;
    }
    public String getCertificateDz() {
        return certificateDz;
    }

    public void setCertificateDz(String certificateDz) {
        this.certificateDz = certificateDz;
    }
    public Integer getTradeResult() {
        return tradeResult;
    }

    public void setTradeResult(Integer tradeResult) {
        this.tradeResult = tradeResult;
    }
    public String getAmount() {
        return amount;
    }

    public void setAmount(String amount) {
        this.amount = amount;
    }
    public String getTradeDateZf() {
        return tradeDateZf;
    }

    public void setTradeDateZf(String tradeDateZf) {
        this.tradeDateZf = tradeDateZf;
    }
    public BigDecimal getCommissionFee() {
        return commissionFee;
    }

    public void setCommissionFee(BigDecimal commissionFee) {
        this.commissionFee = commissionFee;
    }
    public Integer getPayWay() {
        return payWay;
    }

    public void setPayWay(Integer payWay) {
        this.payWay = payWay;
    }
    public String getTradeAccount() {
        return tradeAccount;
    }

    public void setTradeAccount(String tradeAccount) {
        this.tradeAccount = tradeAccount;
    }
    public Integer getTradeAccountType() {
        return tradeAccountType;
    }

    public void setTradeAccountType(Integer tradeAccountType) {
        this.tradeAccountType = tradeAccountType;
    }
    public LocalDateTime getCheckEndDate() {
        return checkEndDate;
    }

    public void setCheckEndDate(LocalDateTime checkEndDate) {
        this.checkEndDate = checkEndDate;
    }
    public Boolean getHasDiff() {
        return hasDiff;
    }

    public void setHasDiff(Boolean hasDiff) {
        this.hasDiff = hasDiff;
    }
    public Integer getProcessState() {
        return processState;
    }

    public void setProcessState(Integer processState) {
        this.processState = processState;
    }
    public Integer getCompleteState() {
        return completeState;
    }

    public void setCompleteState(Integer completeState) {
        this.completeState = completeState;
    }
    public LocalDateTime getConfirmDate() {
        return confirmDate;
    }

    public void setConfirmDate(LocalDateTime confirmDate) {
        this.confirmDate = confirmDate;
    }
    public BigDecimal getCanClearingAmount() {
        return canClearingAmount;
    }

    public void setCanClearingAmount(BigDecimal canClearingAmount) {
        this.canClearingAmount = canClearingAmount;
    }
    public String getRemarks() {
        return remarks;
    }

    public void setRemarks(String remarks) {
        this.remarks = remarks;
    }
    public Boolean getDelFlg() {
        return delFlg;
    }

    public void setDelFlg(Boolean delFlg) {
        this.delFlg = delFlg;
    }
    public Long getCreateUserid() {
        return createUserid;
    }

    public void setCreateUserid(Long createUserid) {
        this.createUserid = createUserid;
    }
    public LocalDateTime getCreateTime() {
        return createTime;
    }

    public void setCreateTime(LocalDateTime createTime) {
        this.createTime = createTime;
    }
    public Long getUpdateUserid() {
        return updateUserid;
    }

    public void setUpdateUserid(Long updateUserid) {
        this.updateUserid = updateUserid;
    }
    public LocalDateTime getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(LocalDateTime updateTime) {
        this.updateTime = updateTime;
    }

    @Override
    public String toString() {
        return "TbCwCheckBatchDetail{" +
            "id=" + id +
            ", billDay=" + billDay +
            ", checkDay=" + checkDay +
            ", batchId=" + batchId +
            ", batchNo=" + batchNo +
            ", payOrderNo=" + payOrderNo +
            ", qudaoOrderNo=" + qudaoOrderNo +
            ", tradeQudao=" + tradeQudao +
            ", certificateJz=" + certificateJz +
            ", certificateDz=" + certificateDz +
            ", tradeResult=" + tradeResult +
            ", amount=" + amount +
            ", tradeDateZf=" + tradeDateZf +
            ", commissionFee=" + commissionFee +
            ", payWay=" + payWay +
            ", tradeAccount=" + tradeAccount +
            ", tradeAccountType=" + tradeAccountType +
            ", checkEndDate=" + checkEndDate +
            ", hasDiff=" + hasDiff +
            ", processState=" + processState +
            ", completeState=" + completeState +
            ", confirmDate=" + confirmDate +
            ", canClearingAmount=" + canClearingAmount +
            ", remarks=" + remarks +
            ", delFlg=" + delFlg +
            ", createUserid=" + createUserid +
            ", createTime=" + createTime +
            ", updateUserid=" + updateUserid +
            ", updateTime=" + updateTime +
        "}";
    }
}
